#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QTimer>
#include <QPixmap>
#include <QImage>
#include <QRgb>
#include <QPicture>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    /*connect(ui->pushButton,&QPushButton::clicked,this,[=](){
        posX += 10;
        // 早版本 repaint() 现在推荐 update()
        // 手动调用绘图时间 update更新
        update();
    });*/
    QTimer * timer = new QTimer();
    connect(timer,&QTimer::timeout,this,[=](){
        posX += 10;
        update();
    });
//    timer->start(500);

//    // Pixmap绘图设备
//    QPixmap pix(300,300);
//    // 填充颜色
//    pix.fill(Qt::red);
//    // 声明画家
//    QPainter painter(&pix);
//    painter.setPen(QPen(Qt::green,10));
//    painter.drawEllipse(QPoint(150,150),100,100);
//    // 保存图片
//    pix.save("E:\\pix.png");
//    // QIamge绘图设备
//    QImage img(300,300,QImage::Format_RGB32);
//    img.fill(Qt::gray);
//    // 声明画家
//    QPainter painter2(&img);
//    painter2.setPen(QPen(Qt::blue,10));
//    painter2.drawEllipse(QPoint(150,150),100,100);
//    // 保存图片
//    img.save("E:\\img.png");

    //QPicture 绘图设备 用于记录和重新绘图指令
    QPicture pic;
    QPainter painter;
    painter.begin(&pic);
    painter.setPen(QPen(Qt::blue,10));
    painter.drawEllipse(QPoint(150,150),100,100);
    painter.end(); // 结束绘画

    pic.save("E:\\pic.yhp"); // 后缀名

}

Widget::~Widget()
{
    delete ui;
}

void Widget::paintEvent(QPaintEvent *event)
{
    /////////////////////////////初级设计////////////////////////
//    // 实例化画家对象
//    QPainter painter(this);
//    // 设置画笔
//    QPen pen(QColor(0,255,0));
//    // 设置画笔粗细
//    pen.setWidth(5);
//    // 设置画笔风格
//    pen.setStyle(Qt::DotLine);// 虚线

//    // 设置画刷
//    QBrush brush(QColor(255,0,0));
//    // 设置画刷风格
//    brush.setStyle(Qt::Dense7Pattern);

//    //画家拿笔
//    painter.setPen(pen);
//    painter.setBrush(brush);

//    // 画线
//    painter.drawLine(QPoint(0,0),QPoint(100,100));
//    // 画圆/椭圆
//    painter.drawEllipse(QPoint(500,500),100,100);
//    // 画矩形
//    painter.drawRect(QRect(QPoint(100,100),QPoint(200,200)));
//    // 画文字
//    painter.drawText(QRect(20,100,40,200),"你好啊");
    /////////////////////////////高级设计////////////////////////
    QPainter painter(this);
    painter.drawEllipse(QPoint(100,150),50,50);

    // 设置抗锯齿  会影响性能
    painter.setRenderHint(QPainter::Antialiasing);
    painter.drawEllipse(QPoint(500,150),50,50);
    // 画矩形
    painter.drawRect(QRect(20,20,50,50));
    // 修改坐标位置
    painter.translate(100,100);
    painter.drawRect(QRect(20,20,50,50));
    // 保存画家状态 即存储当前坐标
    painter.save();
    // 修改坐标位置
    painter.translate(100,100);
    painter.drawRect(QRect(20,20,50,50));
    // 还原画家保存时的状态
    painter.restore();
    painter.drawRect(QRect(25,25,55,55));
    painter.translate(-100,-100);
    if(posX > this->width())
        posX = 0;

    // 利用画家绘制资源图片
//    painter.drawPixmap(posX,0,QPixmap(":/img/image/ad_login0.png"));

    QImage img;
    img.load(":/img/image/ad_login4.png");

    // 修改像素点
    for(int i=0;i<img.width();i++){
        for(int j=0;j<img.height();j++){
            QColor value = static_cast<QColor>(img.pixel(i,j));
            img.setPixel(i,j,qRgb(value.blue(),value.green(),value.red()));
        }
    }

    painter.drawImage(0,0,img);

    // 重新QPicture的绘图指令
    QPicture pic;
    pic.load("E:\\pic.yhp");
    painter.drawPicture(0,0,pic);

}

